// 颜色管理相关API接口
import { get, post, put, del } from '../utils/request'

/**
 * 获取所有颜色列表
 * @param {Object} params - 查询参数
 * @param {string} params.batchId - 批次ID筛选
 * @param {string} params.styleId - 款式ID筛选
 * @param {string} params.status - 状态筛选
 * @param {string} params.search - 搜索关键词
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页大小
 * @returns {Promise<Object>} 颜色列表
 */
export const getColors = async (params = {}) => {
  try {
    const response = await get('/colors', params)
    return response.data
  } catch (error) {
    console.error('获取颜色列表失败:', error)
    throw error
  }
}

/**
 * 根据ID获取颜色详情
 * @param {string} colorId - 颜色ID
 * @param {string} styleId - 款式ID
 * @returns {Promise<Object>} 颜色详情
 */
export const getColorById = async (colorId, styleId) => {
  try {
    const response = await get(`/colors/${styleId}/${colorId}`)
    return response.data
  } catch (error) {
    console.error('获取颜色详情失败:', error)
    throw error
  }
}

/**
 * 根据款式ID获取颜色列表
 * @param {string} styleId - 款式ID
 * @returns {Promise<Array>} 颜色列表
 */
export const getColorsByStyleId = async styleId => {
  try {
    const response = await get(`/styles/${styleId}/colors`)
    return response.data
  } catch (error) {
    console.error('获取款式颜色列表失败:', error)
    throw error
  }
}

/**
 * 根据批次ID获取颜色列表
 * @param {string} batchId - 批次ID
 * @returns {Promise<Array>} 颜色列表
 */
export const getColorsByBatchId = async batchId => {
  try {
    const response = await get(`/batches/${batchId}/colors`)
    return response.data
  } catch (error) {
    console.error('获取批次颜色列表失败:', error)
    throw error
  }
}

/**
 * 获取状态选项列表
 * @returns {Promise<Array>} 状态选项列表
 */
export const getStatusOptions = async () => {
  try {
    const response = await get('/colors/status-options')
    return response.data
  } catch (error) {
    console.error('获取状态选项失败:', error)
    throw error
  }
}

/**
 * 创建新颜色
 * @param {Object} colorData - 颜色数据
 * @returns {Promise<Object>} 创建的颜色
 */
export const createColor = async colorData => {
  try {
    const response = await post('/colors', colorData)
    return response.data
  } catch (error) {
    console.error('创建颜色失败:', error)
    throw error
  }
}

/**
 * 更新颜色信息
 * @param {string} colorId - 颜色ID
 * @param {string} styleId - 款式ID
 * @param {Object} colorData - 更新的颜色数据
 * @returns {Promise<Object>} 更新后的颜色
 */
export const updateColor = async (colorId, styleId, colorData) => {
  try {
    const response = await put(`/colors/${styleId}/${colorId}`, colorData)
    return response.data
  } catch (error) {
    console.error('更新颜色失败:', error)
    throw error
  }
}

/**
 * 删除颜色
 * @param {string} colorId - 颜色ID
 * @param {string} styleId - 款式ID
 * @returns {Promise<boolean>} 删除结果
 */
export const deleteColor = async (colorId, styleId) => {
  try {
    const response = await del(`/colors/${styleId}/${colorId}`)
    return response.data
  } catch (error) {
    console.error('删除颜色失败:', error)
    throw error
  }
}

/**
 * 批量更新颜色状态
 * @param {Array} colorIds - 颜色ID数组
 * @param {string} status - 新状态
 * @returns {Promise<boolean>} 更新结果
 */
export const batchUpdateColorStatus = async (colorIds, status) => {
  try {
    const response = await put('/colors/batch-update-status', { colorIds, status })
    return response.code === 200
  } catch (error) {
    console.error('批量更新颜色状态失败:', error)
    throw error
  }
}

/**
 * 获取颜色统计信息
 * @param {string} batchId - 批次ID（可选）
 * @param {string} styleId - 款式ID（可选）
 * @returns {Promise<Object>} 统计信息
 */
export const getColorStats = async (batchId = null, styleId = null) => {
  try {
    const params = {}
    if (batchId) params.batchId = batchId
    if (styleId) params.styleId = styleId

    const response = await get('/colors/stats', params)
    return response.data
  } catch (error) {
    console.error('获取颜色统计失败:', error)
    throw error
  }
}
